﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using ProtoGame.GameLib;
using Microsoft.Xna.Framework;

namespace ProtoGame.RegioesGatilho
{
    class MudaMapaEventArgs<TId> : EventArgs where TId : struct
    {
        public TId Id { get; private set; }

        public MudaMapaEventArgs(TId id)
        {
            Id = id;
        }
    }

    /// <summary>
    /// Classe de região de gatilho que guarda um valor Id referente a uma saida de mapa.
    /// Quando a região é invadida pelo jogador, envia uma mensagem avisando que foi invadida
    /// e qual o Id de saida, para correto carregamento do próximo mapa.
    /// </summary>
    /// <typeparam name="TId"></typeparam>
    class PGGatilhoMudaMapa<TId> : TriggerArea<MudaMapaEventArgs<TId>> where TId : struct
    {
        TId id;

        public PGGatilhoMudaMapa(Rectangle area, TId id)
            : base(area)
        {
            this.id = id;
        }

        public override void DoCollision(byte collisionType)
        {
            if (collisionType == TiposColisoes.Jogador)
                OnTriggered(this, new MudaMapaEventArgs<TId>(id));
        }
    }
}
